﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Oya.Entities
{
    /// <summary>
    /// Represente les caracteristiques actuelle du monstre.
    /// </summary><remarks>derive de la classe <see cref="MonstreCaractModel"/> et y ajoute la fonction de mise a jour du calcul</remarks>
    public class MonstreCaractActuelle : MonstreCaractModel
    {
        //ref au car de base
        internal MonstreCaractModel Base;
        //ref a la progression 
        internal MonstreCaractModel Prog;

        public MonstreCaractActuelle()
        {
            Base = new MonstreCaractModel();
            Prog = new MonstreCaractModel();
        }
        public MonstreCaractActuelle(MonstreCaractModel baseCaracteristique, MonstreCaractModel progression): this()
        {
            this.Base = baseCaracteristique;
            this.Prog = progression;
        }

        /// <summary>
        /// Mettrait a jour la caracteristique actuelle
        /// TODO DONE I GUESS - What I want is to return the actual Caracteristic...
        /// </summary>
        /// <param name="baseCaracteristique"></param>
        /// <param name="progression"></param>
        /// <returns></returns>
        public void UpdateActualCaracteristiques(MonstreCaractModel baseCaracteristique, MonstreCaractModel progression, int niveauXP)
        {
            this.Attaque = Base.Attaque + Prog.Attaque * niveauXP;
            this.Defense  = Base.Defense + Prog.Defense * niveauXP;
            this.PEnergie = Base.PEnergie + Prog.PEnergie * niveauXP;
            this.PVie = Base.PVie + Prog.PVie * niveauXP;
            this.RegenPEnergie = Base.RegenPEnergie + Prog.RegenPEnergie * niveauXP;
            this.Volonte = Base.Volonte + Prog.Volonte * niveauXP;

        }
    }
}